# 8、利用列表实现筛选法求素数
# 问题描述：编写程序，
# 输入一个大于 2 的自然数，
# 然后输出小于该数字的
# 所有素数组成的列表。

# 首先列出指定范围内所有候选数字，
# 然后从前往后依次选择一个数字去除以后面所有数字，
# 能够被整除的肯定不是素数，把这些数字过滤掉，
# 然后重复这个过程，
# 直到选择的除数大于最大数字的平方根为止。
# filter(function, iterable)
# 第一个为函数，第二个为序列，序列的每个元素作为参数传递给函数进行判断，
# 然后返回 True 或 False，最后将返回 True 的元素放到新列表中。
def createlist(num):
    lst = list(range(2,num))
    m = int(num ** 0.5)# 直到选择的除数大于最大数字的平方根为止。
    for index,value in enumerate(lst):
        if value > m:
            break
        """
        filter()函数：返回该可迭代对象可使函数返回值等价于True的那些元素组成的可迭代对象
        """
        lst[index+1:] = filter(lambda x : x % value != 0,lst[index+1:])
    print(lst)

createlist(100)

